<?php
/**
 * 本文件用于定义搜索条件
 *
 * <code>
 *    $cond = new UCLibLuceneCondition();
 *    $cond->addTerm("name", "中国");
 *    $cond->addTerm("gender", "1");
 *    $searcher = new UCLibLuceneApi();
 *    $searcher->addServer("localhost", 8080);
 *    var_dump($searcher->search($cond));
 * </code>
 * 
 * @author    徐鹏程 <xupengcheng@snda.com>
 * @version   0.0.1		2010/03/29
 */

/**
 * UCLibLuceneCondition 搜索条件定义
 */
class UCLibLuceneCondition {
	private $_query;
	
	// 过滤方式
	const OCCUR_MUST = 0; // 必须包含
	const OCCUR_MUST_NOT = 1; // 必须排除
	const OCCUR_SHOULD = 2; // 或者
	
	// 查询方式
	const TYPE_ANALYZED = 0; // 字段需要分词
	const TYPE_NOT_ANALYZED = 1; // 字段不需要分词
	const TYPE_INT_RANGE = 2; // 整型范围

	/**
	 * 构造函数
	 */
	public function __construct() {
		$this->_query = "";
	}

	/**
	 * 增加一个条件
	 *  @param name: 域名
	 *  @param value: 值
	 *  @param occur: 过滤方式
	 *  @param type: 查询方式
	 */
	public function addTerm($name, $value, $occur = self::OCCUR_MUST, $type = self::TYPE_ANALYZED) {
		if ($this->_query) $this->_query .= "&";
		$this->_query .= "q=".$occur.$type.urlencode($name.":".$value);
	}

	/**
	 * 生成查询参数
	 *  @return: 最终查询的字符串
	 */
	public function toQuery() {
		return $this->_query;
	}
}
